#ifndef ICON_MANAGER_H
#define ICON_MANAGER_H

#include <QtCore/QHash>
#include <QtGui/QStyle>

namespace core
{

class IconManager
{
public:
    static IconManager* getInstance();
    static void destroy();

    void registerNativeIcon(const QString& name,
        QStyle::StandardPixmap pixmap);
    void unregisterNativeIcon(const QString& name);
    void registerStyleIcon(const QString& name,
        const QString& resource);
    void unregisterStyleIcon(const QString& name);

public:
    bool hasIcon(const QString& name) const;
    QIcon icon(const QString& name) const;

private:
    IconManager();
    ~IconManager();

    QIcon nativeIcon(const QString& name) const;
    QIcon styleIcon(const QString& name) const;

private:
    QHash<QString, QStyle::StandardPixmap> m_nativeIconMapping;
    QHash<QString, QString> m_styleIconMapping;
};

} // namespace core

#endif
